1
Além de Arranjos Lineares: Escalando para Dados Multidimensionais
AI032Lesson 4
00:00

Bem-vindo(a) ao A Grande Transferência. Na programação de CPU, definimos como iterar; no GPGPU, definimos o que uma iteração parece ser. Esse deslocamento da lógica centrada em instruções para a lógica centrada em dados é impulsionado pela Abstração de Kernel.

1. O Projeto __global__

Ao usar o __global__ qualificador, você não está escrevendo uma função—está projetando um projeto escalável. A execução individual de um kernel representa uma unidade independente de trabalho, permitindo que a GPU orchestre milhares de tarefas idênticas em seu grande número de núcleos sem gerenciamento manual de threads.

2. O Resolvedor de Endereço Global

Como uma única thread entre milhões encontra seu alvo? Ela utiliza um contrato determinístico conhecido como fórmula de indexação:

$$\text{threadID} = \text{blockIdx.x} \times \text{blockDim.x} + \text{threadIdx.x}$$

Essa fórmula atua como um sistema de coordenadas, conectando os dados lógicos do software (o arranjo) à hierarquia física do hardware (blocos e threads).

Array de Memória Global (10M Elementos)Bloco 0Bloco 1Bloco N-1índice = 1 * blockDim + threadIdx

3. Configuração de Execução

O <<<B, T>>> parâmetros definem a forma da grade. Isso garante Escalabilidade Transparente: seu código executa a mesma lógica independentemente de o hardware ter 2 SMs ou 80 SMs.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>